package Controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import Modelos.ClienteDAO;
import Modelos.FacturaProductoDAO;
import Modelos.FacturaDAO;
import Modelos.Ingrediente;
import Modelos.IngredienteProducto;
import Modelos.IngredienteProductoDAO;
import Modelos.IngredientesDAO;
import Modelos.ProductoDAO;
import Vistas.FrmFactura;

public class ControladorFrmFactura implements ActionListener{
	private FrmFactura frm;
	private Vector<Ingrediente> vectoringrediente;
	private Vector<IngredienteProducto> vectoringredienteproducto;

	public void InstanciarVectores(){
		vectoringrediente = new IngredientesDAO().consultaringrediente();
		vectoringredienteproducto = new IngredienteProductoDAO().Consultar();
	}

	public FrmFactura CreateFormularioFactura(){
		FrmFactura frm = new FrmFactura();
		frm.setVisible(true);
		frm.setLocationRelativeTo(null);
		frm.addListener(this);
		frm.LlenarCMB(DAOProducto().ConsultarProductos());
		return frm;
	}

	public ControladorFrmFactura() {
		super();
		// TODO Auto-generated constructor stub
		frm=CreateFormularioFactura();
		InstanciarVectores();
		frm.AgregarCodigoFactura(new FacturaDAO().consultarfactura().size()+1);
	}

	public ClienteDAO DAOCliente(){
		return new ClienteDAO();
	}

	public ProductoDAO DAOProducto(){
		return new ProductoDAO();
	}



	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		String actionCommand = e.getActionCommand();
		if (actionCommand.equals("Buscar")){
			if(DAOCliente().BuscarCliente(frm.getCedulaRif())){
				frm.Habilitar(true);
			}
			else
			{
				frm.Habilitar(true);
				ControladorFrmCliente co = new ControladorFrmCliente(frm.getCedulaRif());
			}
		}//fin del buscar
		else
			if (actionCommand.equals("Agregar")){
				boolean actualizar=true;
				double monto;
				Vector<Ingrediente> aux = new IngredientesDAO().consultaringrediente();
				for(int i =0;i<vectoringredienteproducto.size();i++){
					if(vectoringredienteproducto.elementAt(i).getCodproducto()==frm.getCodigoProducto()){

						//bien
						for(int j=0;j<aux.size();j++){
							if(aux.elementAt(j).getCodigo()==vectoringredienteproducto.elementAt(i).getCodingrediente()){
								if(aux.elementAt(j).getStock()-(vectoringredienteproducto.elementAt(i).getCantidad()*frm.getCantidad())>0){
									System.out.println(vectoringredienteproducto.elementAt(i).getCantidad());
									aux.elementAt(j).setStock(aux.elementAt(j).getStock()-vectoringredienteproducto.elementAt(i).getCantidad()*frm.getCantidad());
									aux.elementAt(j).setUso(vectoringredienteproducto.elementAt(i).getCantidad()*frm.getCantidad());
									System.out.println("comparando");
									System.out.println(aux.elementAt(j).getStock());
								}
								else
								{
									actualizar=false;
									break;
								}
							}
						}
						//fin del bien
					}
				}
				if(!actualizar)
					frm.MensajeError();
				else
				{
					vectoringrediente=aux;
					frm.AgregarColumna();
				}
			}//fin del agregar
			else
				if (actionCommand.equals("Facturar y Guardar Cambios")){
					//factura;
					new FacturaDAO().RegistrarFactura(frm.getFactura());
					//ingrediente
					new IngredientesDAO().ActualizarIngredientes(vectoringrediente);
					//detalle factura
					for(int i=0;i<frm.getDetalle().size();i++){
						new FacturaProductoDAO().RegistrarCategoria(frm.getDetalle().elementAt(i));
						System.out.println("detalle registrado");
					}
					frm.OperacionExitosa();
					//CAMBIO
					new ControladorFrmCambio(String.valueOf(frm.getFactura().getTotal()));
				}
		if (actionCommand.equals("Salir")){
			frm.dispose();
			
		}
	}
}


